Conventionally, a disk subsystem exists with which the difference between the speed of data transfer from a host apparatus and a storage apparatus read speed is absorbed by inserting a cache memory which is a volatile memory in the data flow between the host apparatus and the storage apparatus.
Typically, a disk subsystem is configured comprising a disk controller which is connected to a host apparatus which is a host system, and a storage apparatus for storing data. Further, the disk controller is configured comprising a processor, a memory controller, and a cache memory and the like.
When data is written, upon receipt of data from the host apparatus, the processor writes the received data to the cache memory and transmits a write completion notification (ACK) to the host apparatus by way of co-operation with the memory controller. Thereafter, the processor transfers the data which has been written to the cache memory to a storage apparatus asynchronously to an I/O from the host apparatus. Note that processing to transfer data from the disk controller to the storage apparatus is called de-staging.
Furthermore, when data is read, the processor reads data which is requested by the host apparatus from the storage apparatus and writes the read data to the cache memory by way of co-operation with the memory controller. Note that, here, the processing to write the data to the cache memory of the disk controller serves to expedite the process by re-using the data. Thereafter, the processor transfers the data which has been written to the cache memory to the host apparatus.
Here, upon receiving the ACK from the disk controller, the host apparatus determines that the data has been written to the storage apparatus without problems and deletes the data from the memory in the host apparatus. However, in reality, the transfer of data from the cache memory in the disk controller to the storage apparatus has not yet been completed and if the power of the disk subsystem is shut off for any reason during this period, the data which has been written to the cache memory is lost and restoration becomes problematic.
Therefore, as one measure for preserving the data which is written to the cache memory, there exists a method of saving data to the non-volatile memory. The method of saving data to the non-volatile memory is a method whereby data which has been written to the cache memory which is volatile memory is saved to the non-volatile memory when the power is shut off and the data which has been saved to the non-volatile memory is restored to the cache memory when the power is restored. Note that processing for restoration from the non-volatile memory to the cache memory is called de-staging. As a result of this method, it is possible to prevent any loss of the data which has not been written to the storage apparatus simply by writing this data to the cache memory when the power is shut off.
PTL1 discloses a disk subsystem with a redundant configuration in which redundancy is established by disposing controllers in the disk controller on two channels. More specifically, a disk subsystem is disclosed in which each of the controllers on the two channels is provided with a cache memory and a non-volatile memory, duplex data is stored in each cache memory and which exercises control such that, when the power is shut off, the data in each cache memory is saved to each non-volatile memory.
PTL2 discloses a disk subsystem which exercises control such that, in a plurality of DKC (DisK Controller) modules which comprise a cache memory and an SSD (Solid State Drive) which is a non-volatile memory, data in the cache memory of a first DKC module which is the master is copied into the cache memory of a second DKC module which is the slave. More specifically, when the power is shut off, data in the cache memory of the second DKC module is backed up to the SSD of the second DKC module, and only copy data in the cache memory of the first DKC module is backed up to the SSD of the first DKC module. Furthermore, a disk subsystem is disclosed whereby, when the power is restored, the data which has been backed up to the SSD of both the first and second DKC modules is used to restore data to the cache memory of the first DKC module.